#include <bits/stdc++.h>
using namespace std;
#define ll long long
ll v,n;
ll f[20][400];
ll num[25];
int main(){
	for(int i=0;i<=20;++i)num[i]=i*i;
	while(cin>>n){
		if(!n)break;
		memset(f,0,sizeof(f));
		v=sqrt(n);
		for(int i=1;i<=v;++i)f[i][num[i]]++;
		for(int i=1;i<=v;++i){
			for(int j=1;j<num[i];++j)
				f[i][j]+=f[i-1][j];
			for(int j=num[i];j<=n;++j)
				f[i][j]+=f[i-1][j]+f[i][j-num[i]];
		}
		cout<<f[v][n]<<endl;
	}
	
	return 0;
}
